﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ZhCun.Framework.Common.Helpers
{
    /// <summary>
    /// 获取当前时间的委托
    /// </summary>
    public delegate DateTime DateTimeHandle();

    public class DateTimeHelper
    {       

        static DateTimeHandle _GetNowTimeHandle;
        /// <summary>
        /// 注册获取当前时间的委托方法
        /// </summary>
        public static void RegisterGetCurrentTimeHandle(DateTimeHandle dtHdl)
        {
            _GetNowTimeHandle = dtHdl;
        }
        /// <summary>
        /// 获取当前时间,执行之前必须先注册获取当前时间的委托,
        /// 如果未注册当前获取时间的委托方法,那么则返回本地时间
        /// </summary>
        public static DateTime GetCurrentTime()
        {
            if (_GetNowTimeHandle == null)
            {
                return DateTime.Now;
            }
            return _GetNowTimeHandle();
        }

        System.Timers.Timer _Timer;
        public delegate void TimerDelegate();
        /// <summary>
        /// 计时方法,
        /// 判断某操作超时的方法
        /// </summary>
        /// <param name="intTime">即使毫秒数</param>
        /// <param name="timerFunc">到时间后触发的方法</param>
        public void StartTimer(int intTime,TimerDelegate timerFunc)
        {   
            if (_Timer == null)
            {
                _Timer = new System.Timers.Timer();//实例化Timer类
                //到达时间的时候执行事件；
                _Timer.Elapsed += new System.Timers.ElapsedEventHandler(delegate(object sender,System.Timers.ElapsedEventArgs e)
                    {
                        timerFunc();
                    });
            }
            _Timer.Interval = intTime;//设置间隔时间，为毫秒；
            _Timer.AutoReset = false;//设置是执行一次（false）还是一直执行(true)；
            _Timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件；            
        }
    }
}
